package org.example

import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, Dataset, SparkSession}

object sparkData2_SQL2 {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession
      .builder()
      .master("local[*]")
      .getOrCreate()

    val sc = spark.sparkContext

    // 加载学生数据并打印（此部分代码与需求无关，但为了完整性保留）
//    val student1: RDDString] = sc.textFile("src/main/resources/student.txt")
//    student1.foreach(println)

    // 加载学生数据集并打印Schema和展示数据（此部分代码与需求无关，但为了完整性保留）
//    val studentSet: DatasetString] = spark.read.textFile("src/main/resources/student.txt")
    // studentSet.printSchema()
    // studentSet.show()

    // 加载学生数据并结构化，打印Schema并展示数据（此部分代码与需求无关，但为了完整性保留）
    val studentFrame: DataFrame = spark.read.csv("src/main/resources/student.txt")
    studentFrame.printSchema()
    studentFrame.show()

    // 创建临时表（此部分代码与需求无关，但为了完整性保留）
    studentFrame.createTempView("score")

    // 通过SQL语句查询全表（此部分代码与需求无关，但为了完整性保留）
    val res: DataFrame = spark.sql(
      """
        |select
        | _c2 as term,
        | avg(_c3) as avg_score,
        | max(_c3) as max_score,
        | sum(_c3) as sum_score
        | from score
        | group by _c2
        |""".stripMargin
    )

    // 通过SQL语句查询分数大于85的学生（此部分代码与需求无关，但为了完整性保留）
    val res1 = spark.sql(
      """
        |select
        |_c1
        |from score
        |where _c3 > 85
        |""".stripMargin
    )

    // 读取平时成绩数据
    val data2: DataFrame = spark.read
      .option("encoding", "GBK")
      .option("header", "true")
      .csv("src/main/resources/23data2.csv")



    sc.stop()
  }
}
